from abc import ABC, abstractmethod
from typing import List, Dict, Any


class NotificationSender(ABC):
    """
    通知发送抽象类
    """

    @abstractmethod
    def send(self, subject: str, content: str, recipients: List[str], **kwargs) -> bool:
        """
        发送通知的抽象方法

        :param subject: 通知主题
        :param content: 通知内容
        :param recipients: 接收者列表
        :param kwargs: 其他参数
        :return: 发送是否成功
        """
        pass

    @abstractmethod
    def connect(self) -> bool:
        """
        连接到通知服务

        :return: 连接是否成功
        """
        pass

    @abstractmethod
    def disconnect(self) -> None:
        """
        断开通知服务连接
        """
        pass